@echo off
setlocal enabledelayedexpansion
chcp 65001


REM 设置编译器
set COMPILER=g++
REM 设置源代码和头文件目录
set SRC_DIR=.\src
set INCLUDE_DIR=.\head
REM 设置输出文件名
SET LIB_PREFIX=
SET LIB_SUFFIX=.lib
set LIB_NAME=MY_STATIC
set OUTPUT_LIB=%LIB_PREFIX%%LIB_NAME%%LIB_SUFFIX%
REM 设置编译选项，这里使用静态库的编译选项
set CXXFLAGS_STATIC=-Wall -Wextra -std=c++11 -finput-charset=UTF-8 -fexec-charset=GBK


echo.
echo.
echo.
REM 输出变量的值以进行调试
echo Compiler: %COMPILER%
echo 源文件目录: %SRC_DIR%
echo 头文件目录: %INCLUDE_DIR%
echo 库文件输出目录: %OUTPUT_LIB%
echo 生成静态库添加的选项: %CXXFLAGS_STATIC%


@REM 
@REM 
@REM 
@REM 
@REM 
@REM 
@REM 
@REM 
@REM
@REM  


echo.
echo.
echo.
REM 查找所有的源文件（排除 Main.cpp）
set SOURCES_STATIC=
for %%f in (%SRC_DIR%\*.cpp) do (
    if not "%%~nf"=="Main" (
        set SOURCES_STATIC=!SOURCES_STATIC! %%f
    )
)
REM 输出找到的源文件列表
echo 找到的静态库源文件列表: %SOURCES_STATIC%





REM 编译源文件为目标文件
set OBJECT_FILES=
for %%f in (%SOURCES_STATIC%) do (
    %COMPILER% -c %CXXFLAGS_STATIC% -I %INCLUDE_DIR% %%f -o %%~nf.o
    set OBJECT_FILES=!OBJECT_FILES! %%~nf.o
)



echo.
echo.
echo.
REM 使用 ar 命令创建静态库
echo 正在创建静态库文件中...
ar crv %OUTPUT_LIB% %OBJECT_FILES%




echo.
echo.
echo.
REM 检查编译是否成功
if %errorlevel% neq 0 (
    echo Static library compilation failed!
    pause
    exit /b
)
echo 静态库已生成成功.





echo.
echo.
echo.
echo 使用该静态库的时候,如果是使用 MinGW g++ 的命令来编译 【-l "MY_STATIC"】 即可.
echo 千万不能添加前缀 lib 和后缀 .a


pause